class Solution {
public:
    int totalSteps(vector<int>& nums) {
        int ans=0;
        stack<pair<int, int>> st; //删除数 删除次序
        for(int num:nums)
        {
            int maxT=0;
            while(!st.empty()&&st.top().first<=num) //当前这个数比前一个删除的数大->前一个数不需要被删除
            {
                maxT=max(maxT, st.top().second); //更新答案，删除前一个数
                st.pop(); 
            }
            maxT=st.empty()?0:maxT+1;
            ans=max(ans, maxT);
            st.push({num, maxT});
        }
        return ans;
    }
};